package top.llove.code.system.system.service;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;

import org.csource.common.MyException;
import org.springframework.web.multipart.MultipartFile;
import top.llove.code.system.system.pojo.SysFile;

import javax.servlet.http.HttpServletResponse;

/**
 * 文件上传Service接口
 *
 * @author: 幸会
 * @date: 2021-12-19
 * @email: 1846724873@qq.com
 * @description: 文件上传Service接口
 * @version: 1.0
 */
public interface YSysFileService
{
    /**
     * 查询文件上传
     * 
     * @param fileId 文件上传主键
     * @return 文件上传
     */
    public SysFile selectSysFileByFileId(Long fileId);

    /**
     * 查询文件上传列表
     * 
     * @param sysFile 文件上传
     * @return 文件上传集合
     */
    public List<SysFile> selectSysFileList(SysFile sysFile);

    /**
     * 新增文件上传
     * 
     * @param sysFile 文件上传
     * @return 结果
     */
    public int insertSysFile(SysFile sysFile);

    /**
     * 修改文件上传
     * 
     * @param sysFile 文件上传
     * @return 结果
     */
    public int updateSysFile(SysFile sysFile);

    /**
     * 批量删除文件上传
     * 
     * @param fileIds 需要删除的文件上传主键集合
     * @return 结果
     */
    public int deleteSysFileByFileIds(Long[] fileIds) throws Exception;

    /**
     * 删除文件上传信息
     * 
     * @param fileId 文件上传主键
     * @return 结果
     */
    public int deleteSysFileByFileId(Long fileId) throws Exception;


    /**
     * 上传文件
     * @author 幸会
     * @date 2021/12/20 13:42
     * @param file 文件
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    public Map<String, Object> upload(MultipartFile file) throws MyException, IOException;

    /**
     * 文件下载
     * @author 幸会
     * @date 2021/12/26 19:37
     * @param id 文件ID
     * @param resp 响应
     */
    public void download(long id, HttpServletResponse resp) throws IOException;
}
